package com.softer.wxzj.mapper;


import com.softer.wxzj.entity.*;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface BaseModifyReqMapper {
    /**
     * 增加
     *
     * @param record
     * @return
     */
    int insert(BaseModifyReq record);

    int insertId(BaseModifyReq record);

    /**
     * 更改baseModifyReqMapper原因
     *
     * @param baseModifyReq
     * @return
     */
    int update(BaseModifyReq baseModifyReq);

    /**
     * 根据id 查询业务id
     *
     * @param id
     * @return
     */
    String getBusinessId(String id);

    /**
     * 业委会变更审核列表
     *
     * @param baseModifyReq
     * @return
     */

    List<BaseModifyReq> getAuditUpdateList(BaseModifyReq baseModifyReq);

    /**
     * 查询变更数据
     */
    List<BaseModifyReq> getList(BaseModifyReq baseModifyReq);


    /**
     * 查询业主信息变更列表
     *
     * @param baseModifyReq
     * @return
     */
    List<BaseModifyReq> getChangeOwnerList(BaseModifyReq baseModifyReq);

    /**
     * 通过业务id查询reqid
     */
    String selectReqId(String id);

    List<BaseModifyReq> selectUpdate(BaseModifyReq baseModifyReq);

    /**
     * 自然幢变更列表
     *
     * @param baseModifyReq
     * @return
     */
    List<BaseModifyReq> selectChange(BaseModifyReq baseModifyReq);

    /**
     * 模糊查询业主信息变更列表
     *
     * @param zoneCode 地区编码
     * @param fuzzy    模糊查询参数
     * @return 业主信息变更列表
     */
    List<BaseOwnerFuzzy> ownerModifyFuzzySearch(@Param("zoneCode") String zoneCode, @Param("fuzzy") String fuzzy);

    /**
     * 模糊查询小区变更审核列表
     *
     * @param baseRegionInfo 查询实体
     * @return 小区变更审核列表
     */
    List<BaseRegionInfo> regionModifyFuzzySearch(BaseRegionInfo baseRegionInfo);

    /**
     * 模糊查询自然幢变更审核列表
     *
     * @param baseBuildInfo 查询实体
     * @return 自然幢变更审核列表
     */
    List<BaseBuildInfo> buildModifyFuzzySearch(BaseBuildInfo baseBuildInfo);

    /**
     * 模糊查询业主变更审核列表
     *
     * @param baseOwnerFuzzy 查询实体
     * @return 业主变更审核列表
     */
    List<BaseOwnerFuzzy> ownerModifyAuditFuzzySearch(BaseOwnerFuzzy baseOwnerFuzzy);

    /**
     * 模糊查询房屋调换审核列表
     *
     * @param baseBuildModifyDetail 查询实体
     * @return 房屋调换审核列表
     */
    List<BaseBuildModifyDetail> houseModifyAuditFuzzySearch(BaseBuildModifyDetail baseBuildModifyDetail);

    /**
     * 模糊查询房屋合并/拆分审核列表
     *
     * @param splitMergeReqList 查询实体
     * @return 房屋合并/拆分审核列表
     */
    List<SplitMergeReqList> splitMergeAuditFuzzySearch(SplitMergeReqList splitMergeReqList);

    /**
     * 模糊查询房屋变更审核列表
     *
     * @param baseHouseInfo 查询实体
     * @return 房屋变更审核列表
     */
    List<BaseModifyReq> houseChangeAuditFuzzySearch(BaseHouseInfo baseHouseInfo);

    /**
     * 模糊查询小区变更查询列表
     *
     * @param zoneCode   管理区域
     * @param fuzzyParam 模糊查询参数
     * @param businessId 小区ID
     * @return 小区变更查询列表
     */
    List<BaseModifyReq> regionAuditSearchFuzzy(@Param("zoneCode") String zoneCode, @Param("fuzzyParam") String fuzzyParam, @Param("businessId") String businessId);

    /**
     * 模糊查询自然幢变更查询列表
     *
     * @param zoneCode   管理区域
     * @param fuzzyParam 模糊查询参数
     * @return 自然幢变更查询列表
     */
    List<BaseModifyReq> buildAuditSearchFuzzy(@Param("zoneCode") String zoneCode, @Param("fuzzyParam") String fuzzyParam);

    /**
     * 模糊查询房屋调换变更查询列表
     *
     * @param baseBuildModifyDetail 查询参数
     * @return 房屋调换变更查询列表
     */
    List<BaseBuildModifyDetail> houseModifyAuditSearchFuzzy(BaseBuildModifyDetail baseBuildModifyDetail);

    /**
     * 模糊查询房屋业主变更查询列表
     *
     * @param baseOwnerFuzzy 模糊查询参数
     * @return 房屋业主变更查询列表
     */
    List<BaseModifyReq> ownerAuditSearchFuzzy(BaseOwnerFuzzy baseOwnerFuzzy);

    /**
     * 业主变更查询列表
     *
     * @param baseModifyReq
     * @return
     */
    List<BaseModifyReq> selectChangeOwner(BaseModifyReq baseModifyReq);

    /**
     * 业主变更审核列表
     */
    List<BaseModifyReq> getOwnerUpdateList(BaseModifyReq baseModifyReq);

    /**
     * 单元变更审核列表
     */
    List<BaseModifyReq> getCellUpdateList(BaseModifyReq baseModifyReq);

    /**
     * 查询变更表是否存在该数据
     *
     * @param id
     * @return
     */
    int selectCountId(String id);

    /**
     * 查询业主id
     *
     * @param id
     * @return
     */
    String business(String id);

    /**
     * 模糊查询房屋变更查询列表
     *
     * @param baseHouseInfo 模糊查询实体
     * @return 房屋变更查询列表
     */
    List<BaseModifyReq> houseChangeAuditSearchFuzzy(BaseHouseInfo baseHouseInfo);

    List<BaseModifyReq> houseChangeAuditSearchFuzzyByHouse(BaseHouseInfo baseHouseInfo);

    /**
     * 变更原因
     *
     * @param reqNo
     * @param msg
     * @return
     */
    int updateMsg(@Param("reqNo") String reqNo, @Param("msg") String msg);

    /**
     * 单元变更查询列表
     *
     * @param baseModifyReq
     * @return
     */
    List<BaseModifyReq> selectChangeCell(BaseModifyReq baseModifyReq);

    /**
     * 删除
     *
     * @param id
     * @return
     */
    int dele(String id);

    /**
     * 房屋结构变更查询列表
     *
     * @param baseModifyReq
     * @return
     */
    List<BaseModifyReq> selectChangeHouse(BaseModifyReq baseModifyReq);

    /**
     * 房屋结构变更审核
     *
     * @param baseModifyReq
     * @return
     */
    List<BaseModifyReq> getHouseUpdateList(BaseModifyReq baseModifyReq);

    /**
     * 修改缴存
     *
     * @param id
     * @param state
     * @return
     */
    int updateStateById(@Param("id") String id, @Param("state") String state);

    int selectCreater(String operNo);

    /**
     * 查询有没有过变更
     *
     * @param id
     * @return
     */
    int selectCountByBusinessId(String id);

    String selectCellNo(String id);

    int selectCountByBusinessIdNotFlow(String id);

    /**
     * 查询这个单元有没有在变更
     *
     * @param id
     * @return
     */
    int selectCountByCellNotFlow(String id);

    /**
     * 通过id删除数据
     *
     * @param id
     * @return
     */
    int remove(String id);
    /**
     * 通过变更类型和id查询在途
     */
    BaseModifyReq selectFlowStateById(@Param("id") String id,@Param("type") String type);
}
